package io.adrainty.bolee.security.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import io.adrainty.bolee.framework.commons.basic.TreeDTO;
import io.adrainty.bolee.security.models.entity.MenuEntity;
import io.adrainty.bolee.security.models.entity.ResourceEntity;

import java.util.List;

/**
 * @author AdRainty
 * @version V1.0.0
 * @since 2025/8/9 下午11:32
 */
public interface IResourceService {

    /**
     * 查询用户所有资源
     * @param userId 用户ID
     * @return 用户所有资源
     */
    List<ResourceEntity> findResourceByUserId(Long userId);

    /**
     * 获取菜单
     * @param systemCode 系统编码
     * @return 菜单
     */
    List<MenuEntity> getMenus(String systemCode);

    /**
     * 获取资源树
     * @param resourceEntity 资源实体
     * @return 资源树
     */
    TreeDTO getResourceTree(ResourceEntity resourceEntity);

    /**
     * 获取资源分页
     * @param pageNum 页码
     * @param pageSize 页大小
     * @param resourceEntity 资源实体
     * @return 资源分页
     */
    IPage<ResourceEntity> getResourcePage(Integer pageNum, Integer pageSize, ResourceEntity resourceEntity);

    /**
     * 创建资源
     * @param resourceEntity 创建资源实体
     * @return 创建资源实体
     */
    ResourceEntity createResource(ResourceEntity resourceEntity);

    /**
     * 修改资源
     * @param resourceEntity 修改资源实体
     * @return 修改结果
     */
    Boolean updateResource(ResourceEntity resourceEntity);

    /**
     * 删除资源
     * @param resourceEntity 删除资源实体
     * @return 删除结果
     */
    List<ResourceEntity> findResourceList(ResourceEntity resourceEntity);
}
